package com.hui.java.concurrency;

import com.sun.management.ThreadMXBean;

import java.lang.management.ManagementFactory;
import java.lang.management.ThreadInfo;

/**
 * TODO: 如何获取线程的消费情况？
 *
 * @author chenth
 * @create 2019-04-17 21:26
 **/
public class AllThreadInfoQuestion {

    public static void main(String[] args) {
        //获取java的线程管理MXBean
        //com.sun.management.ThreadMXBean
        ThreadMXBean threadMXBean = (ThreadMXBean)ManagementFactory.getThreadMXBean();
        //返回所有活动线程的ID。
        // 需要注意一点的是，当返回这些ID的时候，有些线程可能已经终止了
        long[] threadIds = threadMXBean.getAllThreadIds();
        //遍历每个ID
        for(long threadId : threadIds){
            long bytes = threadMXBean.getThreadAllocatedBytes(threadId);
            long kb = bytes / 1024;
            System.out.printf("线程[id: %s] 分配内存， %s KB \n",threadId,kb);
        }
    }
}
